package com.crx.springbootinit.service;

import com.crx.springbootinit.model.dto.love.LoveAndCollectPageDTO;
import com.crx.springbootinit.model.dto.love.LoveGiveDTO;
import com.crx.springbootinit.model.dto.love.LovePageDTO;
import com.crx.springbootinit.model.dto.page.PageQuery;
import com.crx.springbootinit.model.dto.page.PageVO;
import com.crx.springbootinit.model.entity.Love;
import com.baomidou.mybatisplus.extension.service.IService;
import com.crx.springbootinit.model.vo.love.LoveAndCollectMeVO;
import com.crx.springbootinit.model.vo.love.LoveMyPostVO;
import com.crx.springbootinit.model.vo.love.LovePostListVO;

import java.util.List;

/**
 * <p>
 * 点赞表 服务类
 * </p>
 *
 * @author author
 * @since 2024-10-21
 */
public interface ILoveService extends IService<Love> {

    /**
     * 点赞 取消点赞
     * @param loveGiveDTO 点赞参数
     */
    void giveLove(LoveGiveDTO loveGiveDTO);

    /**
     * 查询我点赞的帖子列表
     * @param token token
     * @return 点赞列表
     */
    List<LoveMyPostVO> queryWhoLoveMyPostList(String token);

    /**
     * 查询我点赞的帖子列表
     * @param token token
     * @return 点赞列表
     */
    List<LovePostListVO> queryMyLovePostList(String token);

    /**
     * 查询我点赞的帖子数量
     * @param token token
     * @return 点赞数量
     */
    Long getLoveMyCount(String token);

    Long getLoveMyCountByUserId(Long userId);
    /**
     * 查询我点赞和收藏的帖子数量
     * @param token token
     * @return 点赞和收藏数量
     */
    Long getLoveAndCollectCont(String token);
    /**
     * 查询我点赞和收藏的帖子数量
     * @param userId userId
     * @return 点赞和收藏数量
     */
    Long getLoveAndCollectContByUserId(Long userId);



    /**
     * 分页查询点赞列表
     * @param lovePageDTO 分页参数
     * @return 点赞列表
     */
    PageVO<LoveMyPostVO> queryCollectPage(LovePageDTO lovePageDTO);

    /**
     * 分页查询点赞和收藏我的人列表
     * @return 点赞和收藏我的人列表
     */
    PageVO<LoveAndCollectMeVO> queryLoveAndCollectMe(PageQuery pageQuery);

    Boolean isLove(Long userId, Long postId);
}
